!lm10
!rm76
HELLO vs. LANGUAGE NOT AVAILABLE

When you are trying to send out a disk full of software to many Apple owners, you face a lot of problems trying to be compatible with every configuration.  One of those problems is the HELLO program.

If you write it in Applesoft, and the customer only has Integer BASIC (or vice versa), the message "LANGUAGE NOT AVAILABLE" will print out when he boots your disk.  There are several ways around this problem.  If you get a license from Apple, you can include RAM Applesoft on your disk.  Or, you could require that he boot another disk first; you could warn him to ignore the error message.  You could tell customers to delete the HELLO program which is in the language he doesn't have, and rename the other one to correspond to your boot file name.

Or, you could do this:  write the primary boot program in Applesoft, and include an Integer BASIC version named "APPLESOFT".  I have done this on the S-C Assembler II Version 4.0 disks.  However, just yesterday, I discovered a problem with my Integer BASIC version.  It just hangs up!  It seems that DOS really isn't completely satisfied to just run my program named APPLESOFT.  It also wants to configure some internal addresses for RAM Applesoft and then try to RUN the Applesoft boot program.  By inserting two POKEs in my program named APPLESOFT, I can fool DOS completely.  Here they are:

     POKE -21935,0 : POKE -21918,0

These POKEs change the mode inside DOS so that the boot process is cut short.  The first one is $AA51; it had $C0 (or 192) in it before the POKE.  $C0 means a coldstart is in progress, and RAM Applesoft is in control.  We turn both of those off by POKEing 0.  The second POKE is at $AA62, the index of a pending command.  This was a 6 before the POKE, indicating that a RUN was pending (for the original HELLO file).  We turn that off also.

